{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Comparison between Exp and Pow forgetting curves\n",
    "\n",
    "[![open in colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/open-spaced-repetition/fsrs4anki/blob/main/archive/research/forgetting_curve.ipynb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Here are some settings that you need to replace before running this optimizer.\n",
    "\n",
    "filename = \"../collection-2022-09-18@13-21-58.colpkg\"\n",
    "# If you upload deck file, replace it with your deck filename. E.g., ALL__Learning.apkg\n",
    "# If you upload collection file, replace it with your colpgk filename. E.g., collection-2022-09-18@13-21-58.colpkg\n",
    "\n",
    "# Replace it with your timezone. I'm in China, so I use Asia/Shanghai.\n",
    "# You can find your timezone here: https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568\n",
    "timezone = 'Asia/Shanghai'\n",
    "\n",
    "# Replace it with your Anki's setting in Preferences -> Scheduling.\n",
    "next_day_starts_at = 4\n",
    "\n",
    "# Replace it if you don't want the optimizer to use the review logs before a specific date.\n",
    "revlog_start_date = \"2006-10-05\"\n",
    "\n",
    "# Set it to True if you don't want the optimizer to use the review logs from suspended cards.\n",
    "filter_out_suspended_cards = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import zipfile\n",
    "import sqlite3\n",
    "import time\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import os\n",
    "from datetime import timedelta, datetime\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from itertools import accumulate\n",
    "from tqdm.auto import tqdm\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\", category=UserWarning)\n",
    "tqdm.pandas()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Deck file extracted successfully!\n",
      "revlog.csv saved.\n"
     ]
    }
   ],
   "source": [
    "\"\"\"Step 1\"\"\"\n",
    "# Extract the collection file or deck file to get the .anki21 database.\n",
    "with zipfile.ZipFile(f'{filename}', 'r') as zip_ref:\n",
    "    zip_ref.extractall('./')\n",
    "    print(\"Deck file extracted successfully!\")\n",
    "\n",
    "\"\"\"Step 2\"\"\"\n",
    "if os.path.isfile(\"collection.anki21b\"):\n",
    "    os.remove(\"collection.anki21b\")\n",
    "    raise Exception(\n",
    "        \"Please export the file with `support older Anki versions` if you use the latest version of Anki.\")\n",
    "elif os.path.isfile(\"collection.anki21\"):\n",
    "    con = sqlite3.connect(\"collection.anki21\")\n",
    "elif os.path.isfile(\"collection.anki2\"):\n",
    "    con = sqlite3.connect(\"collection.anki2\")\n",
    "else:\n",
    "    raise Exception(\"Collection not exist!\")\n",
    "cur = con.cursor()\n",
    "res = cur.execute(f\"\"\"\n",
    "SELECT *\n",
    "FROM revlog\n",
    "WHERE cid IN (\n",
    "    SELECT id\n",
    "    FROM cards\n",
    "    {\"WHERE queue != -1\" if filter_out_suspended_cards else \"\"}\n",
    ")\n",
    "\"\"\"\n",
    ")\n",
    "revlog = res.fetchall()\n",
    "if len(revlog) == 0:\n",
    "    raise Exception(\"No review log found!\")\n",
    "df = pd.DataFrame(revlog)\n",
    "df.columns = ['id', 'cid', 'usn', 'r', 'ivl', 'last_lvl', 'factor', 'time', 'type']\n",
    "df = df[(df['cid'] <= time.time() * 1000) &\n",
    "        (df['id'] <= time.time() * 1000)].copy()\n",
    "\n",
    "df_set_due_date = df[(df['type'] == 4) & (df['ivl'] > 0)]\n",
    "df.drop(df_set_due_date.index, inplace=True)\n",
    "\n",
    "df['create_date'] = pd.to_datetime(df['cid'] // 1000, unit='s')\n",
    "df['create_date'] = df['create_date'].dt.tz_localize('UTC').dt.tz_convert(timezone)\n",
    "df['review_date'] = pd.to_datetime(df['id'] // 1000, unit='s')\n",
    "df['review_date'] = df['review_date'].dt.tz_localize('UTC').dt.tz_convert(timezone)\n",
    "df.drop(df[df['review_date'].dt.year < 2006].index, inplace=True)\n",
    "df.sort_values(by=['cid', 'id'], inplace=True, ignore_index=True)\n",
    "\n",
    "df['is_learn_start'] = (df['type'] == 0) & (df['type'].shift() != 0)\n",
    "df['sequence_group'] = df['is_learn_start'].cumsum()\n",
    "last_learn_start = df[df['is_learn_start']].groupby('cid')['sequence_group'].last()\n",
    "df['last_learn_start'] = df['cid'].map(last_learn_start).fillna(0).astype(int)\n",
    "df['mask'] = df['last_learn_start'] <= df['sequence_group']\n",
    "df = df[df['mask'] == True].copy()\n",
    "df.drop(columns=['is_learn_start', 'sequence_group', 'last_learn_start', 'mask'], inplace=True)\n",
    "df = df[(df['type'] != 4)].copy()\n",
    "\n",
    "type_sequence = np.array(df['type'])\n",
    "time_sequence = np.array(df['time'])\n",
    "df.to_csv(\"revlog.csv\", index=False)\n",
    "print(\"revlog.csv saved.\")\n",
    "\n",
    "df = df[(df['type'] != 3) | (df['factor'] != 0)].copy()\n",
    "df['real_days'] = df['review_date'] - timedelta(hours=int(next_day_starts_at))\n",
    "df['real_days'] = pd.DatetimeIndex(df['real_days'].dt.floor('D', ambiguous='infer', nonexistent='shift_forward')).to_julian_date()\n",
    "df.drop_duplicates(['cid', 'real_days'], keep='first', inplace=True)\n",
    "df['delta_t'] = df.real_days.diff()\n",
    "df.dropna(inplace=True)\n",
    "df['i'] = df.groupby('cid').cumcount() + 1\n",
    "df.loc[df['i'] == 1, 'delta_t'] = 0\n",
    "df = df.groupby('cid').filter(lambda group: group['type'].iloc[0] == 0)\n",
    "df['prev_type'] = df.groupby('cid')['type'].shift(1).fillna(0).astype(int)\n",
    "df['helper'] = ((df['type'] == 0) & ((df['prev_type'] == 1) | (df['prev_type'] == 2)) & (df['i'] > 1)).astype(int)\n",
    "df['helper'] = df.groupby('cid')['helper'].cumsum()\n",
    "df = df[df['helper'] == 0]\n",
    "del df['prev_type']\n",
    "del df['helper']\n",
    "\n",
    "def cum_concat(x):\n",
    "    return list(accumulate(x))\n",
    "\n",
    "t_history = df.groupby('cid', group_keys=False)['delta_t'].apply(lambda x: cum_concat([[int(i)] for i in x]))\n",
    "df['t_history']=[','.join(map(str, item[:-1])) for sublist in t_history for item in sublist]\n",
    "r_history = df.groupby('cid', group_keys=False)['r'].apply(lambda x: cum_concat([[i] for i in x]))\n",
    "df['r_history']=[','.join(map(str, item[:-1])) for sublist in r_history for item in sublist]\n",
    "df = df.groupby('cid').filter(lambda group: group['id'].min() > time.mktime(datetime.strptime(revlog_start_date, \"%Y-%m-%d\").timetuple()) * 1000)\n",
    "df['y'] = df['r'].map(lambda x: {1: 0, 2: 1, 3: 1, 4: 1}[x])\n",
    "df.to_csv('revlog_history.tsv', sep=\"\\t\", index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>delta_t</th>\n",
       "      <th>i</th>\n",
       "      <th>t_history</th>\n",
       "      <th>r_history</th>\n",
       "      <th>retention</th>\n",
       "      <th>total_cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>275</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.893817</td>\n",
       "      <td>1488</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5111</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.872222</td>\n",
       "      <td>360</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>218</th>\n",
       "      <td>3.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.790909</td>\n",
       "      <td>110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>345</th>\n",
       "      <td>4.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>396</th>\n",
       "      <td>5.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.707317</td>\n",
       "      <td>41</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38515</th>\n",
       "      <td>43.0</td>\n",
       "      <td>5</td>\n",
       "      <td>0,1,4,12</td>\n",
       "      <td>4,4,4,4</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7968</th>\n",
       "      <td>139.0</td>\n",
       "      <td>5</td>\n",
       "      <td>0,4,12,38</td>\n",
       "      <td>4,4,4,4</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38516</th>\n",
       "      <td>122.0</td>\n",
       "      <td>6</td>\n",
       "      <td>0,1,4,12,43</td>\n",
       "      <td>4,4,4,4,3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7969</th>\n",
       "      <td>410.0</td>\n",
       "      <td>6</td>\n",
       "      <td>0,4,12,38,139</td>\n",
       "      <td>4,4,4,4,3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38517</th>\n",
       "      <td>377.0</td>\n",
       "      <td>7</td>\n",
       "      <td>0,1,4,12,43,122</td>\n",
       "      <td>4,4,4,4,3,3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>56883 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       delta_t  i        t_history    r_history  retention  total_cnt\n",
       "275        1.0  2                0            1   0.893817       1488\n",
       "5111       2.0  2                0            1   0.872222        360\n",
       "218        3.0  2                0            1   0.790909        110\n",
       "345        4.0  2                0            1   0.800000         50\n",
       "396        5.0  2                0            1   0.707317         41\n",
       "...        ... ..              ...          ...        ...        ...\n",
       "38515     43.0  5         0,1,4,12      4,4,4,4   1.000000          1\n",
       "7968     139.0  5        0,4,12,38      4,4,4,4   1.000000          1\n",
       "38516    122.0  6      0,1,4,12,43    4,4,4,4,3   1.000000          1\n",
       "7969     410.0  6    0,4,12,38,139    4,4,4,4,3   1.000000          1\n",
       "38517    377.0  7  0,1,4,12,43,122  4,4,4,4,3,3   1.000000          1\n",
       "\n",
       "[56883 rows x 6 columns]"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy.optimize import curve_fit\n",
    "\n",
    "df_analysis = df[(df['i'] > 1) & (df['delta_t'] > 0) & (df['t_history'].str.count(',0') == 0)].copy()\n",
    "\n",
    "\n",
    "df_analysis['retention'] = df_analysis.groupby(by=['r_history', 't_history', 'delta_t'], group_keys=False)['y'].transform('mean')\n",
    "df_analysis['total_cnt'] = df_analysis.groupby(by=['r_history', 't_history', 'delta_t'], group_keys=False)['id'].transform('count')\n",
    "df_analysis.drop(columns=['id', 'cid', 'usn', 'r', 'ivl', 'last_lvl', 'factor', 'time', 'type', 'create_date', 'review_date', 'real_days', 'y'], inplace=True)\n",
    "df_analysis.drop_duplicates(inplace=True)\n",
    "df_analysis.sort_values(by=['r_history', 't_history', 'delta_t'], inplace=True)\n",
    "df_analysis"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def exp_curve(delta_t, S):\n",
    "    return 0.9 ** (delta_t / S)\n",
    "\n",
    "def reverse_exp_curve(delta_t, R):\n",
    "    return np.log(0.9) / np.log(R) * delta_t\n",
    "\n",
    "def pow_curve(delta_t, S):\n",
    "    return (1 + delta_t / (9 * S)) ** -1\n",
    "\n",
    "def reverse_pow_curve(delta_t, R):\n",
    "    return delta_t / 9 / (1 / R - 1)\n",
    "\n",
    "def fit_stability(delta_t, recall, cnt, curve_func, reverse_curve_func):\n",
    "    try:\n",
    "        params, _ = curve_fit(curve_func, delta_t, recall, sigma=1/np.sqrt(cnt), bounds=((0.1), (3650)))\n",
    "        return params[0]\n",
    "    except Exception as e:\n",
    "        print(e)\n",
    "        return reverse_curve_func(delta_t.values, recall.values)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "b2554b1b28b54747854a2906b1bc28b7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/50077 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_exp_stability = df_analysis.groupby(by=['r_history', 't_history']).progress_apply(lambda group: fit_stability(group['delta_t'], group['retention'], group['total_cnt'], exp_curve, reverse_exp_curve)).reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e7601ba8459a47ebacc644aca70c7e7f",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/50077 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_pow_stability = df_analysis.groupby(by=['r_history', 't_history']).progress_apply(lambda group: fit_stability(group['delta_t'], group['retention'], group['total_cnt'], pow_curve, reverse_pow_curve)).reset_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "tmp = pd.merge(df_analysis, df_exp_stability, on=['r_history', 't_history'], how='left').rename(columns={0: 'exp_stability'})\n",
    "df_test = pd.merge(tmp, df_pow_stability, on=['r_history', 't_history'], how='left').rename(columns={0: 'pow_stability'})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test['exp_recall'] = exp_curve(df_test['delta_t'], df_test['exp_stability'])\n",
    "df_test['pow_recall'] = pow_curve(df_test['delta_t'], df_test['pow_stability'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>delta_t</th>\n",
       "      <th>i</th>\n",
       "      <th>t_history</th>\n",
       "      <th>r_history</th>\n",
       "      <th>retention</th>\n",
       "      <th>total_cnt</th>\n",
       "      <th>exp_stability</th>\n",
       "      <th>pow_stability</th>\n",
       "      <th>exp_recall</th>\n",
       "      <th>pow_recall</th>\n",
       "      <th>MSE_exp</th>\n",
       "      <th>MSE_pow</th>\n",
       "      <th>MSE_exp_weighted</th>\n",
       "      <th>MSE_pow_weighted</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.893817</td>\n",
       "      <td>1488</td>\n",
       "      <td>1.355016</td>\n",
       "      <td>1.251629</td>\n",
       "      <td>0.925190</td>\n",
       "      <td>0.918465</td>\n",
       "      <td>0.000984</td>\n",
       "      <td>0.000608</td>\n",
       "      <td>1.464587</td>\n",
       "      <td>0.903974</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.872222</td>\n",
       "      <td>360</td>\n",
       "      <td>1.355016</td>\n",
       "      <td>1.251629</td>\n",
       "      <td>0.855977</td>\n",
       "      <td>0.849223</td>\n",
       "      <td>0.000264</td>\n",
       "      <td>0.000529</td>\n",
       "      <td>0.095007</td>\n",
       "      <td>0.190421</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.790909</td>\n",
       "      <td>110</td>\n",
       "      <td>1.355016</td>\n",
       "      <td>1.251629</td>\n",
       "      <td>0.791941</td>\n",
       "      <td>0.789690</td>\n",
       "      <td>0.000001</td>\n",
       "      <td>0.000001</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>0.000163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.800000</td>\n",
       "      <td>50</td>\n",
       "      <td>1.355016</td>\n",
       "      <td>1.251629</td>\n",
       "      <td>0.732697</td>\n",
       "      <td>0.737957</td>\n",
       "      <td>0.004530</td>\n",
       "      <td>0.003849</td>\n",
       "      <td>0.226488</td>\n",
       "      <td>0.192468</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.707317</td>\n",
       "      <td>41</td>\n",
       "      <td>1.355016</td>\n",
       "      <td>1.251629</td>\n",
       "      <td>0.677884</td>\n",
       "      <td>0.692585</td>\n",
       "      <td>0.000866</td>\n",
       "      <td>0.000217</td>\n",
       "      <td>0.035519</td>\n",
       "      <td>0.008898</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56878</th>\n",
       "      <td>43.0</td>\n",
       "      <td>5</td>\n",
       "      <td>0,1,4,12</td>\n",
       "      <td>4,4,4,4</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>3635.807087</td>\n",
       "      <td>3635.875351</td>\n",
       "      <td>0.998755</td>\n",
       "      <td>0.998688</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000002</td>\n",
       "      <td>0.000002</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56879</th>\n",
       "      <td>139.0</td>\n",
       "      <td>5</td>\n",
       "      <td>0,4,12,38</td>\n",
       "      <td>4,4,4,4</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>3649.945982</td>\n",
       "      <td>3649.947746</td>\n",
       "      <td>0.995996</td>\n",
       "      <td>0.995786</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000018</td>\n",
       "      <td>0.000016</td>\n",
       "      <td>0.000018</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56880</th>\n",
       "      <td>122.0</td>\n",
       "      <td>6</td>\n",
       "      <td>0,1,4,12,43</td>\n",
       "      <td>4,4,4,4,3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>3649.945782</td>\n",
       "      <td>3649.947341</td>\n",
       "      <td>0.996485</td>\n",
       "      <td>0.996300</td>\n",
       "      <td>0.000012</td>\n",
       "      <td>0.000014</td>\n",
       "      <td>0.000012</td>\n",
       "      <td>0.000014</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56881</th>\n",
       "      <td>410.0</td>\n",
       "      <td>6</td>\n",
       "      <td>0,4,12,38,139</td>\n",
       "      <td>4,4,4,4,3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>3649.949074</td>\n",
       "      <td>3649.953781</td>\n",
       "      <td>0.988235</td>\n",
       "      <td>0.987673</td>\n",
       "      <td>0.000138</td>\n",
       "      <td>0.000152</td>\n",
       "      <td>0.000138</td>\n",
       "      <td>0.000152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>56882</th>\n",
       "      <td>377.0</td>\n",
       "      <td>7</td>\n",
       "      <td>0,1,4,12,43,122</td>\n",
       "      <td>4,4,4,4,3,3</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>3649.948706</td>\n",
       "      <td>3649.953088</td>\n",
       "      <td>0.989176</td>\n",
       "      <td>0.988654</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>0.000129</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>0.000129</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>56883 rows × 14 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       delta_t  i        t_history    r_history  retention  total_cnt  \\\n",
       "0          1.0  2                0            1   0.893817       1488   \n",
       "1          2.0  2                0            1   0.872222        360   \n",
       "2          3.0  2                0            1   0.790909        110   \n",
       "3          4.0  2                0            1   0.800000         50   \n",
       "4          5.0  2                0            1   0.707317         41   \n",
       "...        ... ..              ...          ...        ...        ...   \n",
       "56878     43.0  5         0,1,4,12      4,4,4,4   1.000000          1   \n",
       "56879    139.0  5        0,4,12,38      4,4,4,4   1.000000          1   \n",
       "56880    122.0  6      0,1,4,12,43    4,4,4,4,3   1.000000          1   \n",
       "56881    410.0  6    0,4,12,38,139    4,4,4,4,3   1.000000          1   \n",
       "56882    377.0  7  0,1,4,12,43,122  4,4,4,4,3,3   1.000000          1   \n",
       "\n",
       "       exp_stability  pow_stability  exp_recall  pow_recall   MSE_exp  \\\n",
       "0           1.355016       1.251629    0.925190    0.918465  0.000984   \n",
       "1           1.355016       1.251629    0.855977    0.849223  0.000264   \n",
       "2           1.355016       1.251629    0.791941    0.789690  0.000001   \n",
       "3           1.355016       1.251629    0.732697    0.737957  0.004530   \n",
       "4           1.355016       1.251629    0.677884    0.692585  0.000866   \n",
       "...              ...            ...         ...         ...       ...   \n",
       "56878    3635.807087    3635.875351    0.998755    0.998688  0.000002   \n",
       "56879    3649.945982    3649.947746    0.995996    0.995786  0.000016   \n",
       "56880    3649.945782    3649.947341    0.996485    0.996300  0.000012   \n",
       "56881    3649.949074    3649.953781    0.988235    0.987673  0.000138   \n",
       "56882    3649.948706    3649.953088    0.989176    0.988654  0.000117   \n",
       "\n",
       "        MSE_pow  MSE_exp_weighted  MSE_pow_weighted  \n",
       "0      0.000608          1.464587          0.903974  \n",
       "1      0.000529          0.095007          0.190421  \n",
       "2      0.000001          0.000117          0.000163  \n",
       "3      0.003849          0.226488          0.192468  \n",
       "4      0.000217          0.035519          0.008898  \n",
       "...         ...               ...               ...  \n",
       "56878  0.000002          0.000002          0.000002  \n",
       "56879  0.000018          0.000016          0.000018  \n",
       "56880  0.000014          0.000012          0.000014  \n",
       "56881  0.000152          0.000138          0.000152  \n",
       "56882  0.000129          0.000117          0.000129  \n",
       "\n",
       "[56883 rows x 14 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_test['MSE_exp'] = (df_test['exp_recall'] - df_test['retention']) ** 2\n",
    "df_test['MSE_pow'] = (df_test['pow_recall'] - df_test['retention']) ** 2\n",
    "df_test['MSE_exp_weighted'] = df_test['MSE_exp'] * df_test['total_cnt']\n",
    "df_test['MSE_pow_weighted'] = df_test['MSE_pow'] * df_test['total_cnt']\n",
    "df_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "first review exp_rmse: 0.027728287577305333\n",
      "first review pow_rmse: 0.025822027313503877\n"
     ]
    }
   ],
   "source": [
    "first_review = df_test[df_test['i'] == 2].copy()\n",
    "exp_rmse = np.sqrt(first_review['MSE_exp_weighted'].sum() / first_review['total_cnt'].sum())\n",
    "pow_rmse = np.sqrt(first_review['MSE_pow_weighted'].sum() / first_review['total_cnt'].sum())\n",
    "print(f\"first review exp_rmse: {exp_rmse}\")\n",
    "print(f\"first review pow_rmse: {pow_rmse}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rest reviews exp_rmse: 0.08928613755836967\n",
      "rest reviews pow_rmse: 0.09506514574203066\n"
     ]
    }
   ],
   "source": [
    "rest_reviews = df_test[df_test['i'] > 2].copy()\n",
    "exp_rmse = np.sqrt(rest_reviews['MSE_exp_weighted'].sum() / rest_reviews['total_cnt'].sum())\n",
    "pow_rmse = np.sqrt(rest_reviews['MSE_pow_weighted'].sum() / rest_reviews['total_cnt'].sum())\n",
    "print(f\"rest reviews exp_rmse: {exp_rmse}\")\n",
    "print(f\"rest reviews pow_rmse: {pow_rmse}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>exp_rmse</th>\n",
       "      <th>pow_rmse</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>i</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.027728</td>\n",
       "      <td>0.025822</td>\n",
       "      <td>9761.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.068440</td>\n",
       "      <td>0.068797</td>\n",
       "      <td>9683.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.123281</td>\n",
       "      <td>0.123780</td>\n",
       "      <td>9622.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.154008</td>\n",
       "      <td>0.155173</td>\n",
       "      <td>9176.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.138374</td>\n",
       "      <td>0.141275</td>\n",
       "      <td>7786.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>62</th>\n",
       "      <td>0.001551</td>\n",
       "      <td>0.001634</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>63</th>\n",
       "      <td>0.001012</td>\n",
       "      <td>0.001066</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>0.000308</td>\n",
       "      <td>0.000325</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>0.000435</td>\n",
       "      <td>0.000458</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>0.000666</td>\n",
       "      <td>0.000702</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>65 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    exp_rmse  pow_rmse     cnt\n",
       "i                             \n",
       "2   0.027728  0.025822  9761.0\n",
       "3   0.068440  0.068797  9683.0\n",
       "4   0.123281  0.123780  9622.0\n",
       "5   0.154008  0.155173  9176.0\n",
       "6   0.138374  0.141275  7786.0\n",
       "..       ...       ...     ...\n",
       "62  0.001551  0.001634     3.0\n",
       "63  0.001012  0.001066     2.0\n",
       "64  0.000308  0.000325     1.0\n",
       "65  0.000435  0.000458     1.0\n",
       "66  0.000666  0.000702     1.0\n",
       "\n",
       "[65 rows x 3 columns]"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def exp_rmse(df):\n",
    "    return np.sqrt(df['MSE_exp_weighted'].sum() / df['total_cnt'].sum())\n",
    "\n",
    "def pow_rmse(df):\n",
    "    return np.sqrt(df['MSE_pow_weighted'].sum() / df['total_cnt'].sum())\n",
    "\n",
    "# compare exp and pow in each group\n",
    "comparison = df_test.groupby('i').apply(lambda group: pd.Series({'exp_rmse': exp_rmse(group), 'pow_rmse': pow_rmse(group), 'cnt': group['total_cnt'].sum()}))\n",
    "comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "# plot exp_rmse and pow_rmse in each group and show the cnt\n",
    "\n",
    "plt.bar(comparison.index, comparison['cnt'], label='cnt', ec='k', lw=.2, alpha=0.3)\n",
    "plt.twinx()\n",
    "plt.plot(comparison.index, comparison['exp_rmse'], label='exp_rmse')\n",
    "plt.plot(comparison.index, comparison['pow_rmse'], label='pow_rmse')\n",
    "plt.legend(loc='lower center')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "fsrs4anki",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
